<?php
//   +----------------------------------------------------------------------
//   | Copyright (c) 2015-2025 http://www.hdphp.cn All rights reserved.
//   | Licensed ( http://www.hdphp.cn/licenses/ )
//   | Author: Jack <sophia2152@qq.com>
//   | 官方网址: http://www.hdphp.cn
//   | 这不是一个自由软件！您只能在不用于商业目的的前提下对程序代码进行修改和使用。
//   | 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
//   +----------------------------------------------------------------------
namespace app\controller\admin\v1\system;

use app\controller\admin\Auth;
use app\services\system\SystemDepartmentServices;
use hdphp\services\CacheService;
use think\facade\App;

/**
 * Class：系统部门控制器
 * 创建人：Jack
 * 创建时间：2023/11/23 11:14
 * @package app\controller\admin\v1\system
 */
class SystemDepartment extends Auth
{
    /**
     * SystemDepartment constructor.
     * @param App                      $app
     * @param SystemDepartmentServices $services
     */
    public function __construct(App $app, SystemDepartmentServices $services)
    {
        parent::__construct($app);
        $this->services = $services;
    }

    /**
     * 注释：部门列表
     * 创建人：Jack
     * 创建时间：2023/8/18 9:54
     * @return mixed
     */
    public function index()
    {
        $where = $this->request->getMore([
            ['status', ''],
            ['dept_name', ''],
        ]);

        return $this->success($this->services->getDeptList($where));
    }

    /**
     * 注释：部门详情
     * 创建人：Jack
     * 创建时间：2023/8/18 10:29
     * @param $id
     * @return mixed
     */
    public function read($id)
    {
        $deptInfo = $this->services->get($id);
        if (!$deptInfo) {
            return $this->fail('部门不存在!');
        }
        return $this->success($deptInfo->toArray());
    }

    /**
     * 注释：创建部门
     * 创建人：Jack
     * 创建时间：2023/4/10 8:24
     * @return mixed
     */
    public function save()
    {
        $data = $this->request->postMore([
            'dept_name',
            ['pid', 0],
            ['sort', 0],
            ['status', 0],
            ['remarks', '']
        ]);
        if (!$data['dept_name']) return $this->fail('请输入部门名称!');
        $data['create_time'] = time();
        if (!$this->services->save($data)) return $this->fail('添加部门失败!');
        CacheService::redisHandler('system_dept')->clear();
        return $this->success('添加部门成功!');
    }

    /**
     * 注释：更新修改部门
     * 创建人：Jack
     * 创建时间：2023/8/21 8:35
     * @param $id
     * @return mixed
     */
    public function update($id)
    {
        if (!$id || !($this->services->get($id))) {
            return $this->fail('数据不存在!');
        }
        $data = $this->request->postMore([
            'dept_name',
            ['pid', 0],
            ['sort', 0],
            ['status', 0],
            ['remarks', '']
        ]);
        if (!$data['dept_name']) return $this->fail('请输入部门名称!');
        $data['update_time'] = time();
        if (!$this->services->update($id, $data)) return $this->fail('修改失败!');
        CacheService::redisHandler('system_dept')->clear();
        return $this->success('修改成功!');
    }

    /**
     * 注释：修改部门状态
     * 创建人：Jack
     * 创建时间：2023/8/1 9:17
     * @param $id
     * @param $status
     * @return mixed
     */
    public function set_status($id, $status)
    {
        if (!$id) {
            return $this->fail('缺少参数!');
        }
        $dept = $this->services->get($id);
        if (!$dept) {
            return $this->fail('没有查到相关数据!');
        }
        $dept->status = $status;
        $dept->update_time = time();
        if ($dept->save()) {
            CacheService::redisHandler('system_dept')->clear();
            return $this->success('修改成功!');
        } else {
            return $this->fail('修改失败!');
        }
    }

    /**
     * 注释：删除部门
     * 创建人：Jack
     * 创建时间：2023/8/1 9:18
     * @param $id
     * @return mixed
     */
    public function delete($id)
    {
        if (!$this->services->update($id, ['is_delete' => 1])) {
            return $this->fail('删除失败,请稍候再试!');
        }
        CacheService::redisHandler('system_dept')->clear();
        return $this->success('删除成功!');
    }
}